package org.example;

import java.util.Scanner;
import java.time.LocalDateTime;
/**
 * 作者:TC
 * 时间:2023/12/8 14:35
 * 描述:没有bug
 */
public class DoMission {
    public static void main(String[] args) {
        LocalDateTime currentDateTime = LocalDateTime.now();
        Player player=new Player("1","Tannn",0,0);
//        玩家获取的第一个任务
        Mission mission1=new Mission("下列修饰符中与访问控制无关的是?","D",10,3,2);
        System.out.println("玩家"+player.getName()+"获取了任务:"+mission1.getContent()+"(任务ID:"+mission1.getId()+"),当前时间为:"+currentDateTime);
        player.addMission(mission1);
//        玩家获取的第二个任务
        Mission mission2=new Mission("","",3,-3,-4);
        System.out.println("玩家"+player.getName()+"获取了任务:"+mission2.getContent()+"(任务ID:"+mission2.getId()+"),当前时间为:"+currentDateTime );
        player.addMission(mission2);
int time=getCurrentTime();
//    玩家到达任务一完成任务一
        player.arriveMission(mission1.getX(),mission1.getY());
        boolean finshMission=false;//判断任务是否完成
        while(!finshMission){
            System.out.println(mission1.getContent());
            System.out.println("A.private B.public C.protected D.final");
            Scanner sc=new Scanner(System.in);
//            玩家输入答案
            System.out.println("请输入你的答案：");
            String answer=sc.next();
            if(answer.equals(mission1.getCorrectAnswer())){
                if((getCurrentTime()-time)<=mission1.getTimeLimit()) {
                    System.out.println("恭喜你答对了！在限定时间内完成任务，当前用时" + (getCurrentTime() - time) + "秒");
                }else{
                    System.out.println("恭喜你答对了！但是超出了限定时间内完成任务，当前用时" + (getCurrentTime() - time) + "秒");
                }
//                将任务从玩家任务列表中移除
                player.getMissionList().remove(mission1);
                finshMission=true;
            }else{
                System.out.print("很遗憾，答错了,请继续");
            }
        }
//    玩家到达任务二完成任务二
        System.out.println();
        player.arriveMission(mission2.getX(),mission2.getY());
        int guessCout=(int)(Math.random()*100+1);//使用random函数生成随机生成0-100的数字
        int count=0;
        //记录开始答题开始时间
//        long startTime=System.currentTimeMillis();
        int startTime=getCurrentTime();
        boolean mission2finsh=false;
        while(!mission2finsh){
            System.out.print("请输入猜测的数字（1-100）之间：");
            Scanner sc=new Scanner(System.in);
            int guessNuMber=sc.nextInt();
            if(guessNuMber==guessCout){//任务完成
                int endtime=getCurrentTime();//完成任务二的时间
//                double spendtime=(endtime-startTime)/1000.0;
                int spendtime=endtime-startTime;
                mission2finsh=true;
               if(spendtime<=mission2.getTimeLimit()){
                   System.out.println("恭喜你答对了！在限定时间内完成任务花费了"+spendtime+"秒"+"猜测了"+count+"次");
                   player.getMissionList().remove(mission2);
//                   break;
               }else{
                   System.out.println("恭喜你答对了！但是超出了限定时间完成任务花费了"+spendtime+"秒"+"猜测了"+count+"次");
                   player.getMissionList().remove(mission2);
//                   break;
               }
            }else if(guessNuMber<guessCout){
                System.out.println("很遗憾，猜错了，数字"+guessNuMber+"比要猜的数字小");
                count++;
            }else{
                System.out.println("很遗憾，猜错了，数字比"+guessNuMber+"比要猜的数字大");
                count++;
            }
        }
        // 所有任务完成
        System.out.println("玩家 " + player.getName() + " 成功完成了所有任务！用时 " + (getCurrentTime()-time) + " 秒。");
    }
//    获取当时间
    public static int getCurrentTime() {
        return (int) (System.currentTimeMillis() / 1000);
    }
}
